package com.example.demo.util;


import com.example.demo.dao.TBizStyleDAO;
import com.example.demo.po.TBizStyle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Component
public class CodeCache {
    public static Map<String, String> codeMap =new HashMap<>();//根据name_id 获取字典值
    public static Map<String,List<Object>> levelOneMap = new HashMap<>();//获取1级字典集合
//    public static Map<String,List<Object>> levelTwoMap = new HashMap<>();//获取2级字典集合
    @Autowired
    TBizStyleDAO tBizStyleDAO;

    public void  freshen(List<TBizStyle> list){
        codeMap.clear();
        levelOneMap.clear();
//        levelTwoMap.clear();
        this.setMap(list);
    }

    public  void setMap(List<TBizStyle> list){
        System.out.println("系统启动中。。。加载字典数据到codeMap");
//        List<TBizStyle> list = tBizStyleDAO.findByParam(new TBizStyle());
        if(list!=null&&list.size()>0){
            for (TBizStyle style:list){
                if(style.getLevel()>0){
                    //根据name_id 获取字典值
                    String key = style.getStylename().trim()+"_"+style.getStylevalue().trim();
                    String value = style.getStyledesc();
                    codeMap.put(key,value);
                    if(style.getLevel()==1){
                        List<Object> c1 = null;
                        if(levelOneMap.containsKey(style.getStylename()))
                            c1 =levelOneMap.get(style.getStylename());
                        else
                            c1 = new ArrayList<>();
                        c1.add(style);
                        levelOneMap.put(style.getStylename(),c1);
                    }
//                    else{
//                        List<Object> c2 = null;
//                        if(levelTwoMap.containsKey(style.getFid().toString()))
//                            c2 =levelTwoMap.get(style.getFid().toString());
//                        else
//                            c2 = new ArrayList<>();
//                        c2.add(style);
//                        levelTwoMap.put(style.getFid().toString(),c2);
//                    }
                }
            }
        }
        System.out.println("系统启动中。。。加载字典数据到codeMap");
    }

    @PostConstruct
    public void init() {
        List<TBizStyle> list = tBizStyleDAO.findByParam(new TBizStyle());
        this.setMap(list);
//        List<TBizStyle> list = tBizStyleDAO.findByParam(new TBizStyle());
//        if(list!=null&&list.size()>0){
//            for (TBizStyle style:list){
//                if(style.getLevel()>0){
//                    //根据name_id 获取字典值
//                    String key = style.getStylename().trim()+"_"+style.getStylevalue().trim();
//                    String value = style.getStyledesc();
//                    codeMap.put(key,value);
//                    if(style.getLevel()==1){
//                        List<Object> c1 = null;
//                        if(levelOneMap.containsKey(style.getStylename()))
//                            c1 =levelOneMap.get(style.getStylename());
//                        else
//                            c1 = new ArrayList<>();
//                        c1.add(style);
//                        levelOneMap.put(style.getStylename(),c1);
//                    }else{
//                        List<Object> c2 = null;
//                        if(levelTwoMap.containsKey(style.getFid().toString()))
//                            c2 =levelTwoMap.get(style.getFid().toString());
//                        else
//                            c2 = new ArrayList<>();
//                        c2.add(style);
//                        levelTwoMap.put(style.getFid().toString(),c2);
//                    }
//                }
//            }
//        }
//        for(String key:codeMap.keySet()){
//            System.out.println("codeMapkey is "+key);
//            System.out.println("codeMapvalue is "+codeMap.get(key));
//        }
//        for(String key:levelOneMap.keySet()){
//            System.out.println("levelOneMap_key is "+key);
//            System.out.println("levelOneMap_value is "+levelOneMap.get(key).toString());
//        }
//        for(String key:levelTwoMap.keySet()){
//            System.out.println("levelTwoMap_key is "+key);
//            System.out.println("levelTwoMap_value is "+levelTwoMap.get(key).toString());
//        }

    }

    @PreDestroy
    public void destroy() {
        //系统运行结束
    }


}
